How to parse a column of json string in Pyspark
在用$spark.sql(\ )$从Table读入数据时,
DataFrame
的列有时是这样一种类型:json
形式的string
。此时,我们通常需要去解析这个json string,从而提取我们想要的数据。
数据准备
1 | # Sample Data Frame |
如上所示,我们模拟一个DataFrame,其中只有一列,列名为
json
,类型为string
。可以看到,json
中的值为json格式。我们如何从中取出我们关心的值,形成一个单独的列呢?例如:$df[‘header’][‘id’]$.
from_json函数
1 | from pyspark import Row |
$Result:$
1 | root |
1 | df_json.select(col('json.header.id').alias('id')).show() |
$Result:$
1 | +-----+ |
1 | df_json.select(col('json.header.id').alias('id'), col('json.body.name').alias('name')).show() |
$Result:$
1 | +-----+-------+ |